package com.risk.management.service;

import com.risk.management.entity.Risk;
import java.util.List;

/**
 * 风险服务接口
 */
public interface RiskService {
    /**
     * 根据ID查询风险
     * @param id 风险ID
     * @return 风险信息
     */
    Risk getRiskById(Long id);
    
    /**
     * 查询所有风险
     * @return 风险列表
     */
    List<Risk> getAllRisks();
    
    /**
     * 根据项目ID查询风险
     * @param projectId 项目ID
     * @return 风险列表
     */
    List<Risk> getRisksByProjectId(Long projectId);
    
    /**
     * 根据责任人ID查询风险
     * @param ownerId 责任人ID
     * @return 风险列表
     */
    List<Risk> getRisksByOwnerId(Long ownerId);
    
    /**
     * 根据提出人ID查询风险
     * @param proposerId 提出人ID
     * @return 风险列表
     */
    List<Risk> getRisksByProposerId(Long proposerId);
    
    /**
     * 根据风险状态查询风险
     * @param status 风险状态
     * @return 风险列表
     */
    List<Risk> getRisksByStatus(Integer status);
    
    /**
     * 根据风险级别查询风险
     * @param level 风险级别
     * @return 风险列表
     */
    List<Risk> getRisksByLevel(Integer level);
    
    /**
     * 根据项目ID和风险状态查询风险
     * @param projectId 项目ID
     * @param status 风险状态
     * @return 风险列表
     */
    List<Risk> getRisksByProjectIdAndStatus(Long projectId, Integer status);
    
    /**
     * 添加风险
     * @param risk 风险信息
     * @return 是否成功
     */
    boolean addRisk(Risk risk);
    
    /**
     * 更新风险
     * @param risk 风险信息
     * @return 是否成功
     */
    boolean updateRisk(Risk risk);
    
    /**
     * 删除风险
     * @param id 风险ID
     * @return 是否成功
     */
    boolean deleteRisk(Long id);
    
    /**
     * 更新风险状态
     * @param id 风险ID
     * @param status 风险状态
     * @return 是否成功
     */
    boolean updateRiskStatus(Long id, Integer status);
    
    /**
     * 更新风险责任人
     * @param id 风险ID
     * @param ownerId 责任人ID
     * @return 是否成功
     */
    boolean updateRiskOwner(Long id, Long ownerId);
    
    /**
     * 计算风险等级
     * @param probability 可能性
     * @param impact 影响程度
     * @return 风险等级 （1-低，2-中，3-高）
     */
    int calculateRiskLevel(int probability, int impact);
} 